/**
 ****************************************************************
 * @file timer.c
 *
 * @brief  timer driver.
 *
 * @author 
 *
 * 
 ****************************************************************
 */

/*
 * INCLUDE FILES
 ****************************************************************
 */	
#include "define.h"
#include "timer.h"

#include <FreeRTOS.h>
#include <task.h>

volatile tick XDATA g_current_tick = 0;
u8 XDATA g_led1_on_time = 0;
u8 XDATA g_led2_on_time = 0;

/*****************************************************************************
 * Name		: init_timer0
 * Function	: initial the timer 0
 * ---------------------------------------------------------------------------
 * Input Parameters:None
 * Output Parameters:None
 * Return Value:
 * ---------------------------------------------------------------------------
 * Description:
 * 
 *****************************************************************************/
void init_timer0(void)
{
}


/*****************************************************************************
 * Name		: get_tick
 * Function	: 获取系统当前时间
 * ---------------------------------------------------------------------------
 * Input Parameters:None
 * Output Parameters:None
 * Return Value:
 * ---------------------------------------------------------------------------
 * Description:
 * 		该时间是以ms为单位的循环记时.
 *****************************************************************************/
tick get_tick(void)
{
	return xTaskGetTickCount();
}

/*****************************************************************************
 * Name		: get_diff_tick
 * Function	: 获取两个tick间的时间差
 * ---------------------------------------------------------------------------
 * Input Parameters:None
 * Output Parameters:None
 * Return Value:
 * ---------------------------------------------------------------------------
 * Description:
 * 		
 *****************************************************************************/
tick get_diff_tick(tick cur_tick, tick prior_tick)
{
	return (cur_tick - prior_tick);
}

/*****************************************************************************
 * Name		: mdelay
 * Function	: delay msec 
 * ---------------------------------------------------------------------------
 * Input Parameters:None
 * Output Parameters:None
 * Return Value:
 * ---------------------------------------------------------------------------
 * Description:
 * 		
 *****************************************************************************/
 void mdelay(tick msec)
 {
	vTaskDelay(pdMS_TO_TICKS(msec));
}

 
u8 is_timeout(tick start_time, tick interval)
{
	return (get_diff_tick(get_tick(), start_time) >= interval);
}

